package q680_validPalindrome;

public class Solution {
    /*
    实际上此题不需要考虑奇偶的问题
    建立两个指针指向字符串两端
    当遇到不相等时 只需要验证裁掉此时左指针或者右指针指向的字符
    然后判断剩下的字符串是否是一个回文字符串即可
    例如abccbda 遇到b和d不相等 则裁掉b或者d 看bccd或者ccbd是不是一个回文字符
    奇数的字符串也是一样
     */
    public boolean validPalindrome(String s) {
        int l = 0, r = s.length();
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) return isPalind(s.substring(l, r)) || isPalind(s.substring(l + 1, r + 1));
            l--;
            r++;
        }
        return true;
    }

    public boolean isPalind(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) return false;
            l++;
            r--;
        }
        return true;
    }

    public static void main(String[] args) {
        String s = "abc";
        int l = 0, r = s.length() - 1;
        System.out.println(s.substring(l + 1, r + 1));
    }
}
